package club.kingyin.easycache.component.annotation;

import club.kingyin.easycache.key.EasyCacheKey;
import club.kingyin.easycache.utils.AnnotationUtils;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface EasyCache {

    String module() default EasyCacheKey.DEFAULT_MODULE;

    String methodName() default AnnotationUtils.PRAM_NULL;

    Expire[] expire() default {};

    InvokeException[] exception() default {};

    Remove[] removes() default {};

    Param[] params() default {};

    Context[] context() default {};

    boolean cache() default false;
}
